package fr.upmc.alasca.centreCalcul.interne.machinePhysique.interfaces;

import java.util.List;

import fr.upmc.components.interfaces.OfferedI;
import fr.upmc.components.interfaces.RequiredI;


/**
 * @author Antoine Lavaire, Sabri Labassi, Thibaut Fleury, Ryme Fantazi
 */
public 	interface 	MachinePhysiqueAdmissionI
extends 			OfferedI, RequiredI
{
	/**
	 * Permet de demander la réservation d'un certain nombre de coeurs
	 * pour une application.
	 * @param p_uriApplication L'identifiant de l'application faisant la demande
	 * @param p_nbCoeursAReserver Le nombre de coeurs voulus
	 * @return Retourne le nombre de coeurs qui ont pu être réservés
	 */
	public 	int 	reserverCoeur
	(
		String 	p_uriApplication, 
		int 	p_nbCoeursAReserver
	) throws 	Exception;


	


	/**
	 * Permet de demander à ne plus utiliser un certain nombre de coeurs pour 
	 * une application (et donc pour sa Machine Virtuelle) sur une
	 * Machine Physique.
	 * @param p_uriApplication L'identifiant de l'application faisant la demande
	 * @param p_uriCoeurs La liste des coeurs à relacher
	 */
	public	void	relacherCoeur
	(
		String			p_uriApplication,
		List<String>	p_uriCoeurs
	) throws	Exception;
}
